home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / DCLAP 4j / Drtf / DRichViewNu.h < prev    next >
Encoding:
Text File  |  1995-12-17  |  7.5 KB  |  212 lines  |  [TEXT/R*ch]

  1. // DRichViewNu.h
  2. // d.g.gilbert
  3.  
  4. #ifndef _DRICHVIEWNU_
  5. #define _DRICHVIEWNU_
  6.  
  7. #include "Dvibrant.h"
  8. #include "DView.h"
  9. #include "DFile.h"
  10. #include "DMethods.h"
  11. #include "DPanel.h"
  12. #include "DWindow.h"
  13. #include "DApplication.h"
  14.  
  15. #include "DRichStyle.h"
  16.  
  17. class DList;
  18. class DDialogText;
  19.  
  20. class DRichView : public DPanel, public DPrintHandler, public DSaveHandler
  21. {
  22. public:
  23.     short     fNumLines, fNumItems, fBarmax, fTabCount, fDocFormat;
  24.     Boolean    fAutoAdjust, fIsVirtual, fDodraw;
  25.     DList    *    fStyles; // of DRichStyle
  26.     DList    *    fParags; // of DParagraph
  27.     Nlm_RecT    fDrawr;
  28.     Nlm_PoinT    fAtpt;
  29.     DRichStyle * fCurrentStyle;
  30.         // selection handling;
  31.     Boolean         fSelected, fSelInPict;
  32.     short                fSelParag, fSelChar, fSelEndParag, fSelEndChar;
  33.     Nlm_RecT        fSelRect; // for pict item
  34.     DRichStyle    fSelStyle; // for pict only??
  35.     DRichStyle* fMapStyle;
  36.  
  37.     static void  InitRichView();
  38.  
  39.     DRichView(long id, DView* itsSuperior, short pixwidth, short pixheight);
  40.     virtual ~DRichView();
  41.  
  42.     virtual void Draw();
  43.     virtual void Print();
  44.     virtual void Save( DFile* f);
  45.  
  46.     virtual void ViewRect( Nlm_RecT& r);
  47.     virtual char* DataToChar(char* ptr);  
  48.  
  49.     virtual void Append( void* data, short lines, DParagraph* parFormat,  
  50.                         DRichStyle* styles, short nstyles, Boolean docOwnsData = true);
  51.     virtual void Append( char* text, DParagraph* parFormat, 
  52.                         DRichStyle* styles, short nstyles, Nlm_FonT aFont = NULL);
  53.     
  54.     virtual void Replace( short item, void* data, short lines, DParagraph* parFormat,  
  55.                         DRichStyle* styles, short nstyles, Boolean docOwnsData = true);
  56.     virtual void     Replace( short item, char* text, DParagraph* parFormat,  
  57.                         DRichStyle* styles, short nstyles, Nlm_FonT aFont = NULL);
  58.     
  59.     virtual void Insert( short item, void* data, short lines, DParagraph* parFormat, 
  60.                         DRichStyle* styles, short nstyles, Boolean docOwnsData = true);
  61.     virtual void Insert( short item, char* text, DParagraph* parFormat, 
  62.                         DRichStyle* styles, short nstyles, Nlm_FonT aFont = NULL);
  63.                         
  64.     virtual void Delete( short item);
  65.     virtual void DeleteAll();
  66.                         
  67.     virtual void    ShowFile( char* filename, Nlm_FonT font = Nlm_programFont);
  68.     virtual void    ShowFileFancy( char* filename, DParagraph* parFormat, 
  69.                         DRichStyle* styles, short nstyles, short tabStops = 4);
  70.             
  71.     void  SetTabs( short theTabstops);
  72.     virtual char* GetText( short item, short row);
  73.     void     MapPoint( Nlm_PoinT pt, short& item, short& row,  Nlm_RectPtr rct,
  74.                                     char* wordAt, short maxword, DRichStyle* styleAt);
  75.  
  76.     void        GetItemStats( short item, short& startsAt, short& rowCount, short& lineHeight);
  77.     Boolean GetScrollStats( short& offset, short& firstShown, short& firstLine);
  78.     void         SetData(void* data);
  79.     VoidPtr GetData();
  80.     virtual Boolean    IsVisible( short item, short& top, short& bottom, short& firstline);
  81.  
  82.     virtual void SizeToSuperview( DView* super, Boolean horiz, Boolean vert);
  83.     virtual void Resize( DView* superview, Nlm_PoinT sizechange);
  84.     virtual void SetSlateBorder( Boolean turnon);
  85.  
  86.     Boolean HasSelection() { return fSelected; }
  87.     Boolean SelectionIsPict() { return fSelInPict; }
  88.     virtual    void    MarkSelection( Nlm_RecT selrect);
  89.     virtual void     ClearSelection();
  90.     virtual void  HiliteSelection(Boolean turnon);
  91.     virtual Boolean GetSelection( Boolean& inpict,
  92.                             short& selparag, short& selchar, 
  93.                             short& selendparag, short& selendchar,
  94.                             Nlm_RecT& selrect, DRichStyle* selstyle);
  95.     virtual char* GetSelectedText();
  96.     virtual void  SetSelectedText( short startparag, short startchar, 
  97.                                                                  short endparag, short endchar);
  98.     virtual Boolean HiliteText( short startparag, short startchar, 
  99.                                                             short endparag, short endchar, Boolean turnon); 
  100.     virtual void SelectAll();
  101.  
  102.     virtual Boolean Doc2ViewOffset(short& xoff, short& yoff);
  103.     virtual    void MapView2Doc( Nlm_RecT& selr);
  104.     virtual void MapView2Doc( Nlm_PoinT& mpt);
  105.     virtual    Boolean MapDoc2View( Nlm_RecT& selr);
  106.  
  107.     virtual Boolean FindURL( short& atparag, short& atchar, short& atlen,
  108.                                                         short startparag, short startchar); 
  109.     virtual Boolean Find( char* match, short& atparag, short& atchar,
  110.                             short startparag = 0, short startchar = 0, Boolean caseSensitive = false); 
  111.     virtual void InsertStyle( short atparag, short atchar, short atlength, DRichStyle* theStyle);
  112.  
  113.     virtual void Click( Nlm_PoinT mouse);
  114.     virtual void DoubleClick( Nlm_PoinT mouse);
  115.     virtual void SingleClick( Nlm_PoinT mouse);
  116.  
  117.     void    ScrollDoc( Nlm_BaR sb, short newval, short oldval);
  118.     void    ResetDoc();    
  119.     void    Update( short from, short to);
  120.     void    AdjustScroll();
  121.     void    SetAutoAdjust( Boolean autoAdjust);
  122.  
  123.     DParagraph* GetParaPtr( short item); 
  124.  
  125.     virtual void SetStyle( DRichStyle* theStyle);
  126.     DRichStyle* GetStyle( short styleid);
  127.     DRichStyle* GetStyleAtIndex( DParagraph* aParag, short styleindex);
  128.     DRichStyle* GetStyleAtChar( DParagraph* aParag, short atchar);
  129.     DRichStyle* GetStyleAtChar( short atparag, short atchar);
  130.     short FindOrAddStyle( DRichStyle* theStyle);
  131.  
  132.     short GetNumRows( short item);
  133.     short GetLineStart( short item);
  134.     short GetLineHeight( short item);
  135.     short GetItemNum( short desiredLine);
  136.     short UpdateLineStarts( short first);
  137.     void  GetDocStats( short& numParags, short& numLines) ;
  138.     void     ShowTextFile( char* filename, Nlm_FonT font);
  139.     void  UpdateStyleHeight( DRichStyle* theStyle);
  140.  
  141.     short CharWidth(char ch);
  142.  
  143. protected:
  144.     enum handleMode {
  145.         kAppend,
  146.         kInsert,
  147.         kReplace
  148.         };
  149.  
  150.     enum {
  151.         kNoCharWidth = 255
  152.         };
  153.  
  154.     unsigned char fCharWidths[256];
  155.  
  156.     void HandleAddInsRep( handleMode mode, short item, char* text, 
  157.                     DParagraph* parFormat, DRichStyle* styles, short nstyles, Nlm_FonT aFont);
  158.  
  159.     void  ZeroCharWidths();
  160.     short SkipPastNewLine( char* text, short cnt);
  161.     void  AppendParag( DParagraph* aParag);
  162.     DParagraph* MakeNewParag( void* data, short lines, DParagraph* parFormat,  
  163.                     DRichStyle* styles, short nstyles, Boolean docOwnsData);
  164.     void     ClearCurrentStyle();
  165.     virtual short DrawStyledItem( DParagraph* itemPtr, Nlm_RectPtr rpara, short item,
  166.                               short frst, Boolean forPrinter, Nlm_PoinT* mapPoint);
  167.     short StyleLineWidth( char* texts, short maxwid, DParagraph* itemPtr, short& istyle);
  168.     short FitTextToWidth( char* texts, short maxwid, Boolean byPixels,
  169.                               DParagraph* itemPtr, short& istyle);
  170.     void     FormatText( short item, DParagraph* itemPtr, Boolean byPixels);
  171.     void     CollectRange( short item, short& lowest, short& highest);
  172.     void     CacheAndFormat( short item, DParagraph* itemPtr, Nlm_RectPtr r);
  173.     void     CacheIfNever( short item, DParagraph* itemPtr, Nlm_RectPtr r);
  174.     void     FreeCachedItem( short item, short& lowest, short& highest);
  175.     short VisLinesAbove( Nlm_RectPtr r, short item, short line, short& lowest, short& highest);
  176.     short VisLinesBelow( Nlm_RectPtr r, short item, short line, short& lowest, short& highest);
  177.     short PixelsBetween( Nlm_RectPtr r, short firstLine,
  178.                                short lastLine, short& lowest, short& highest);
  179.     void     SaveTableItem( DParagraph* itemPtr, FILE *f, Boolean tabStops);
  180.     void  UpdateItemHeights( DParagraph* aParag);
  181.     void     ParseText(DParagraph* itemPtr, char* text, Boolean byPixels, Nlm_RecT r);
  182. };
  183.  
  184.  
  185. class    DRichTextDoc : public DWindow
  186. {
  187. public:
  188.     static Nlm_RecT gRichDocRect;
  189.     DRichView* fRichView;
  190.     Nlm_FonT    fFont;
  191.     DDialogText * fFloatingEditText;  
  192.  
  193.     DRichTextDoc( long id = 0, Boolean makeRichView = true, Nlm_FonT itsFont = Nlm_programFont);
  194.     virtual void Open( DFile* aFile);
  195.     virtual void Open( char* filename);
  196.     virtual void Open();
  197.     virtual void Close();
  198.     virtual void ResizeWin();
  199.     virtual Boolean IsMyAction(DTaskMaster* action); 
  200. };
  201.  
  202. class DRichApplication : public DApplication
  203. {    
  204. public:
  205.     DRichApplication();
  206.     virtual void OpenDocument(DFile* aFile);
  207. };
  208.  
  209.  
  210.  
  211. #endif
  212.